/**
 * @author: Gene
 * @age: 永远18岁的美少年
 * @Email： yangjianyun@58.com
 * @date: 2021-12-23 09:37:19
 * @description: ts中的元组类型
 */

/** 1. 定义一个元组类型 */
// 声明一个由 string 和 number 构成的元组：
const list: [string, number] = ['Gene', 1]

/** 2. 元组的可选元素 */
// 元组类型允许在元素类型后缀一个 ? 来说明元素是可选的：
let list1: [number, string?, boolean?]
list1 = [10, 'Sherlock', true]
list1 = [10, 'Sherlock']
list1 = [10]

// 可选元素必须在必选元素的后面，也就是如果一个元素后缀了 ?号，其后的所有元素都要后缀 ?号。

/** 3. 元组类型的 rest 方式使用*/
declare function restFn(...args: [string, number, boolean]): void

// 其相当于
declare function rest(arg1: number, arg2: string, arg3: boolean): void

/**
 * TIPS： 在声明文件（.d.ts）中，关键字 declare 表示声明作用。声明文件用于编写第三方类库，
 * 通过配置 tsconfig.json 文件中的 declaration 为 true，在编译时可自行生成。
 * */